iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0

前言

昨天我們介紹了如何在SQLite根據sql創建database,至於要怎麼在flask使用這個database呢?今天將帶大家實作。

範例

  1. 建立資料庫連線:在 Flask 應用程式中建立與 SQLite 資料庫的連線。你可以在 before_request 函式中建立連線,並在 teardown_request 函式中關閉連線:

     SQLITE_DB_PATH = 'test.db'
     SQLITE_DB_SCHEMA = 'test.sql'
     def get_db():
         db = getattr(g, '_database', None)
         if db is None:
             db = g._database = sqlite3.connect(SQLITE_DB_PATH)
             # Enable foreign key check
             db.execute("PRAGMA foreign_keys = ON")
         return db
    
    @app.teardown_appcontext
    def close_db(exception):
        db = getattr(g, '_database', None)
        if db is not None:
            db.close()
    
  2. 建立資料表和執行 SQL 查詢:你可以使用 SQLite 提供的 SQL 語法來建立資料表、插入資料和查詢資料。以下是一個示範:

    @app.route('/create_table')
    def create_table():
        db = get_db()
        cursor = db.cursor()
        cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)')
        db.commit()
        return 'Table created successfully'
    
    @app.route('/insert_data')
    def insert_data():
        db = get_db()
        cursor = db.cursor()
        cursor.execute('INSERT INTO users (name) VALUES (?)', ('John',))
        db.commit()
        return 'Data inserted successfully'
    
    @app.route('/get_data')
    def get_data():
         db = get_db()
         cursor = db.cursor()
         cursor.execute('SELECT * FROM users')
         data = cursor.fetchall()
         password = db.execute(
             'SELECT * FROM members'
         ).fetchall()
         return str(password)
    

    在這個示範中,我們建立了一個 users 資料表,插入了一筆資料並從資料庫中檢索所有的資料,此外可以透過網址get_data得到剛剛新增的資料,以及day-9創立的member table。

總結

我們可以發現將def insert_data綁定post就能達成註冊功能,而登入認證只要透過sql的where比對即可,明天將教大家如何達成登入驗證以及使用flask login來達成登入狀態。


上一篇
[Day-9] flask登入功能(1) 使用SQLite
下一篇
[Day-11] 登入功能(3) flask login
系列文
Flask30天教學-從入門到入土30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言